package ejemploJBullet;
/**
 *
 * @author Marlon Nunez. Junio de 2009
 */
import javax.media.j3d.*;
import javax.vecmath.*;

import com.sun.j3d.utils.geometry.*;
import javax.media.j3d.*;
import javax.vecmath.*;
import com.bulletphysics.collision.dispatch.*;
import com.bulletphysics.collision.shapes.*;
import com.bulletphysics.dynamics.*;
import com.bulletphysics.linearmath.*;
import com.sun.j3d.utils.image.TextureLoader;

public class Utilidades { 

    public static void actualizarPresentacion3D(CollisionShape This, RigidBody cuerpoRigido ){
            TransformGroup desplazamientoFigura=new TransformGroup();
            if (This instanceof Cilindro) desplazamientoFigura = ((Cilindro) This).desplazamientoFigura;
            if (This instanceof Esfera) desplazamientoFigura = ((Esfera) This).desplazamientoFigura;
            Transform trans = new Transform();            
            if (cuerpoRigido != null && cuerpoRigido.getMotionState() != null) {
			cuerpoRigido.getMotionState().getWorldTransform(trans);   
                        Quat4f orientacion = new Quat4f(); 
                        cuerpoRigido.getOrientation(orientacion);
                       //System.out.println("POS :"+trans.origin.x+" "+ trans.origin.y+" "+ trans.origin.z);
                        Transform3D desplazYrotacion = new Transform3D(orientacion, new Vector3f((float) trans.origin.x,
                                                                                    (float) trans.origin.y,
                                                                                    (float) trans.origin.z),    1);
                        desplazamientoFigura.setTransform(desplazYrotacion);
                }   
    }
   
    public static Appearance Apariencia(String ficheroTextura){
      Appearance apariencia=new Appearance();
      if (ficheroTextura==null){
            apariencia = new Appearance();
            Material mat = new Material();
            mat.setAmbientColor (new Color3f( (float) Math.random(), (float) Math.random(), 0.5f));
            mat.setSpecularColor(new Color3f(0.3f, 0.3f, 0.3f));
            apariencia.setMaterial(mat);  
    }else{
            Texture tex = new TextureLoader(ficheroTextura, VentanaBasicaJBullet.marco).getTexture();
            apariencia.setTexture(tex);
            TextureAttributes texAttr = new TextureAttributes();
            texAttr.setTextureMode(TextureAttributes.MODULATE);
            apariencia.setTextureAttributes(texAttr); 
    }
    return apariencia;
  }
    
}